
from sqlalchemy import Column, Integer, String, ForeignKey, PickleType

from app.models.course import Course

from .base import BaseModel
from .chapter import Chapter
from .user import User


class Video(BaseModel):
    id = Column(Integer, primary_key=True, autoincrement=True, comment='主键')
    name = Column(String(512), nullable=False, comment='')
    # kfs = Column(ARRAY, default=['a','b'
    local_path = Column(String(512), comment='本地磁盘路径')  # 本地路径
    # 对象的本地路径  @WAIT 懒加载可以非空，也就是用户可以选择哪时候进行视频的处理，因为有local_path的选项
    o_path = Column(String(512), comment='对象的本地磁盘路径，搜索和释放资源都可以用到')
    # kfs: list = Column(ARRAY, default=[]) # Frame对象列表, 具体结构如下  class Frame所示，好像可以直接存数据库里
    kfs: list = []  # 没有设置column不会同步数据库，具体的kfs在o_path对象中
    output_dir = Column(String(512), comment="处理后的输出存储目录，释放资源可用到")
    # 可以在vo里进行体现
    url = Column(String(512), comment='视频url路径')  # 视频url路径
    img = Column(String(512), comment='封面图片URL，默认取kfs第一帧')  # 封面图片，默认取kfs第一帧
    cw = Column(String(512), comment="课件url地址")  # 课件
    # kfs = Column()
    user_id = Column(Integer, ForeignKey(User.id), nullable=False)
    chapter_id = Column(Integer, ForeignKey(Chapter.id), nullable=True)
    course_id = Column(Integer, ForeignKey(Course.id), nullable=True)


'''
class Frame:
    id: int
    name: str
    title: list
    img_url: str
    img_local_path: str  # @WAIT 没必要返回
    ms: int
    time: str
    txts: list  # @WAIT 没必要返回
    boxes: list  # @WAIT 没必要返回
'''
